'use strict'

process.chdir(__dirname)

const titbit = require('titbit')
const fs = require('fs')

try{
    fs.accessSync('./images')
}catch(err){
    fs.mkdirSync('./images')
}

let cert_path = '/usr/local/share'

const app = new titbit({
    //开启调试模式，若有错会输出错误信息
    debug: true,
    cert: `${cert_path}/api.luffe.club.pem`,
    key: `${cert_path}/api.luffe.club.key`
})

//添加路由
app.get('/', async c => {
    c.send('ok')
})

app.get('/upload', async c => {
    //c.reply是响应对象，可写的流，在HTTP/1.1中指向response，在HTTP/2中指向http2stream
    await c.helper.pipe('./upload.html', c.reply)
})

app.post('/upload', async c => {
    //根据name获取文件对象
    let f = c.getFile('image')

    if(!f){
        return c.status(400).send('image not found')
    }

    //根据传入的原始文件名生成唯一文件名，主要使用f.filename的扩展名
    let fname = c.helper.makeName(f.filename)

    //移动文件到指定位置
    await c.moveFile(f, `./images/${fname}`)

    c.send(fname)
})

//返回图片数据
app.get('/image/:name', async c => {
    //c.param是一个对象，其中的key值是路由参数的名称
    let imgname = c.param.name

    await c.helper.pipe(`./images/${imgname}`, c.reply)
})

//运行在1234端口
app.run(1234)